/*
 * @lc app=leetcode.cn id=151 lang=cpp
 *
 * [151] 反转字符串中的单词
 */

// @lc code=start
class Solution {
public:
    string reverseWords(string s) {
        // unordered_map<int, string> map_word;
        vector<string> words;

        for(int i = 0, j = 0; i < s.size(); ++i)
        {
            while(s[i] == ' ' && i <s.size())
            {
                i++;
            }
            j = i;
            while(s[j] != ' ' && j < s.size())
            {
                j++;
            }
            string temp = "";

            temp = s.substr(i, j - i);

            // 这里要注意可能会把一个空白的string插入words中
            if(temp != "") words.push_back(temp);

            i = j;
        }

        s.clear();

        for(int i = words.size() - 1; i >= 0; --i)
        {  
            // 在这里也可以处理上一个循环可能会出现的问题
            if(words[i] != "")
            {
                s += words[i];
                if(i != 0) {
                    s += " ";
                } 
            }
        }

        return s;
    }
};  
// @lc code=end

